Calculez la factorielle $ n !$ pour $ n=1,2,3,4,5,100$.
Par définition, nous avons que $ 1 !=1$, $ 2 ! = 1\times 2 = 2$, $ 3 ! = 1\times 2\times 3 = 6$, $ 4 ! = 1\times 2\times 3 \times 4= 24$.
La factorielle $ 100 !$ est plus difficile. Cependant, il n’est pas nécessaire de le faire à la main. Par exemple, la plupart des chiffriers (par exemple Excel) ont une fonction pour calculer la factorielle (par ex. FACT).
On peut aussi le faire avec un langage informatique comme Python :
x=1
for i in range(1,101):
x*= i
print(x)
Question 2
Calculez $ {n \choose k}$ pour $ n=10$ et $ k=1,2,3,4$.
Calculez $ \sum_{k=1}^4 {n \choose k} k $
Il suffit de calculer $ \frac{n !}{k ! (n-k) !}$.
On obtient $ \frac{10 !}{1 ! (10-1) !}=10$, $ \frac{10 !}{2 ! (10-2) !}=45$, $ \frac{10 !}{3 ! (10-3) !}=120$, et $ \frac{10 !}{4 ! (10-4) !}=210$.
Nous avons que $ \sum_{k=1}^4 {n \choose k} k = 10 \times 1+ 45 \times2 + 120 \times 3+ 210\times 4=1300$.
On peut aussi le faire avec un langage informatique comme Python :
from math import factorial
sum((factorial(10)/(factorial(10-k)*factorial(k)) * k for k in range(1,5)))
Question 3
Vous souhaitez accélérer le calcul des vues du type suivant dans une base de données relationnelles : « SELECT produit, sum(ventes) where country= ? ». Le paramètre « country » peut prendre différentes valeurs.
Vous disposez de 3 Mo de libre pour cette accélération. Comme il y a plus ou moins de produits mis en vente dans différents pays, la taille du résultat de la requête varie selon le pays.
Vous ne savez pas d’avance quels pays risquent d’intéresser l’analyste. Ainsi, vous supposez que tous les pays sont d’un intérêt égal, a priori.
Quelles requêtes devez-vous matérialiser, et pourquoi ?
On applique simplement un algorithme glouton. Comme tous les pays ont une valeur égale à nos yeux, il suffit de trier les pays par ordre inverse de leur espace de stockage :
L’algorithme glouton cesse son travail avec l’Allemagne.
Question 4
On cherche à estimer la taille de la vue « SELECT produit,pays,sum(ventes) FROM table GROUP BY produit,pays » en nombre de lignes. À cette fin, on extrait un sous-ensemble de la table originale.
En utilisant un modèle statistique multifractal, estimez la taille de la vue.
Échantillon :
produit
pays
fournisseur
ventes
crayon
Canada
Bilboard
432
livre
France
Walmart
4235
vélo
Canada
VendTout
466
livre
Allemagne
VendTout
567
crayon
France
VendTout
887
vélo
Canada
Walmart
421
crayon
Canada
Walmart
14
livre
France
Zellers
566
vélo
Canada
VendTout
67
crayon
Canada
Zellers
89
crayon
Canada
Babo
19
En utilisant les conventions de l’article « Estimation statistique de la taille des vues », nous avons $ p=0.01$ et $ N=1100$ (resp. le ratio d’échantillonnage et le nombre de rangées).
On doit commencer par faire un group by sur l’échantillon. Sélectionnons d’abord les colonnes qui nous intéressent :
produit
pays
crayon
Canada
livre
France
vélo
Canada
livre
Allemagne
crayon
France
vélo
Canada
crayon
Canada
livre
France
vélo
Canada
crayon
Canada
crayon
Canada
Regroupons les valeurs semblables :
produit
pays
crayon
Canada
crayon
Canada
crayon
Canada
crayon
Canada
vélo
Canada
vélo
Canada
vélo
Canada
livre
France
livre
France
livre
Allemagne
crayon
France
Calculons le group by :
produit
pays
décompte
crayon
Canada
4
vélo
Canada
3
livre
France
2
livre
Allemagne
1
crayon
France
1
Il y a $ F_0=5$ rangées dans ce group by. Nous savons que $ \log F_0 \approx 2.32$ [1], donc la valeur initiale de $ k$ est $ \lceil 2.32 \rceil = 3$. Nous avons $ m_{\mathrm{max}}=4$. Nous avons que $ N’=11$.
Il nous reste maintenant à exécuter la boucle suivante :
La valeur retournée est 16. On s’attend donc à ce qu’il n’y ait que 16 rangées dans le group by effectué sur l’ensemble de la table.
Question 5
Nous avons vu dans les articles de cette semaine qu’en prenant le OU exclusif de plusieurs fonctions de hachage (une sur chaque colonne), on composait ainsi une fonction de hachage indépendante trois-à-trois. Est-ce que le même résultat serait vrai avec le OU logique régulier ? Que pouvez-vous dire du ET logique ?
Le OU logique est tel que la valeur 1 est plus probable comme résultat que la valeur 0. Prenons le cas où les fonctions de hachage ne génèrent qu’un seul bit. Alors, la valeur hachée combinée de 0 se produira avec une probabilité de $ \frac{1}{2}\frac{1}{2}=\frac{1}{4}$ alors que la valeur 1 se produira avec la probabilité $ \frac{3}{4}$. Cette fonction de hachage n’est donc pas uniforme, et donc, elle n’est pas indépendante trois-à-trois.
La même analyse peut se faire avec le ET logique, sauf que, cette fois-ci, c’est la valeur 0 qui est plus probable.
Question 6
Soit la table suivante :
colonne 1
colonne 2
A
Z
A
Y
C
Y
A
Z
C
W
A
W
B
Z
Soit les valeurs hachées suivantes :
A
000
B
110
C
010
W
111
Y
101
Z
011
En utilisant l’algorithme simple de Flajolet et Martin, estimez le nombre de rangées distinctes dans la table. Quelle est la valeur exacte ?
On commence par remplacer les valeurs par les valeurs hachées :
colonne 1
colonne 2
OU exclusif
position bit 1
000
011
011
2
000
101
101
1
010
101
111
1
000
011
011
2
010
111
101
1
000
111
111
1
110
011
101
1
Le bit 1 le plus à droite est à la position 2. L’estimation est donc $ 2^2/0.77351 \approx 5.17$. La valeur exacte est 6.
[1] Attention ! Toujours prendre le logarithme en base 2.